Backport to 2.29.x: #10175: Prune real-time branch of deep hierarchical caggs - #10328
Merged
Conversation
A single application of ts_transform_time_bucket_comparison() strips only the outermost time_bucket() from a comparison. In a hierarchical continuous aggregate the bucket input is itself another time_bucket() call. The real-time branch could not be proven empty and the refresh re-scanned the whole raw un-materialized tail of the base hypertable. Add ts_transform_nested_time_bucket_comparison(), which applies the single-level transform repeatedly until the bound is expressed on the raw column. Only the original qual and the fully reduced qual are kept; the intermediate levels have no consumer. Fixes: #10071 (cherry picked from commit 5ebc0fa)
timescale-automation
enabled auto-merge (rebase)
July 27, 2026 08:19
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is an automated backport of #10175: Prune real-time branch of deep hierarchical caggs.
The original issue is #10071.
This PR will be merged automatically after all the relevant CI checks pass. If this fix should not be backported, or will be backported manually, just close this PR. You can use the backport branch to add your changes, it won't be modified automatically anymore.
For more details, please see the documentation
Original description
Prune real-time branch of deep hierarchical caggs
A single application of ts_transform_time_bucket_comparison() strips
only the outermost time_bucket() from a comparison. In a hierarchical
continuous aggregate the bucket input is itself another time_bucket()
call. The real-time branch could not be proven empty and the refresh
re-scanned the whole raw un-materialized tail of the base hypertable.
Add ts_transform_nested_time_bucket_comparison(), which applies the
single-level transform repeatedly until the bound is expressed on the
raw column. Only the original qual and the fully reduced qual are kept;
the intermediate levels have no consumer.
Fixes: #10071